package model

// RelationModelNodeType 关系模型与节点类型的关联表
type RelationModelNodeType struct {
	BaseModel       // 继承公共字段
	ModelID    int  `gorm:"column:MODEL_ID;not null;index:idx_model_node;comment:关联关系模型ID（外键）" json:"model_id"`
	NodeTypeID int  `gorm:"column:NODE_TYPE_ID;not null;index:idx_model_node;comment:关联节点类型ID（外键）" json:"node_type_id"`
	IsMain     bool `gorm:"column:IS_MAIN;type:INT;default:0;comment:是否为模型的主节点类型" json:"is_main"`

	// 联合唯一索引：同一模型不能重复关联同一节点类型
	_ struct{} `gorm:"uniqueIndex:idx_unique_model_node;fields:model_id,node_type_id"`

	// 外键关联（序列化时忽略）
	RelationModel RelationModel `gorm:"foreignKey:ModelID;references:ID;constraint:OnDelete:CASCADE" json:"-"`
	NodeType      NodeType      `gorm:"foreignKey:NodeTypeID;references:ID;constraint:OnDelete:CASCADE" json:"-"`
}

func (RelationModelNodeType) TableName() string {
	return "RELATION_MODEL_NODE_TYPES"
}
